001    /**
002     * Copyright 2003-2004 The Apache Software Foundation
003     * Copyright 2005 Stephen McConnell
004     *
005     * Licensed under the Apache License, Version 2.0 (the "License");
006     * you may not use this file except in compliance with the License.
007     * You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package net.dpml.cli;
018    
019    import java.util.List;
020    import java.util.Set;
021    
022    /**
023     * Instances of CommandLine represent a command line that has been processed
024     * according to the definition supplied to the parser.
025     *
026     * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
027     * @version 1.0.0
028     */
029    public interface CommandLine 
030    {
031        
032        /**
033         * Detects the presence of an option with the specified trigger in this 
034         * CommandLine.
035         * 
036         * @param trigger the trigger to search for
037         * @return true iff an option with this trigger is present
038         */
039        boolean hasOption( String trigger );
040        
041        /**
042         * Detects the presence of an option in this CommandLine.
043         * 
044         * @param option the Option to search for
045         * @return true iff the option is present
046         */
047        boolean hasOption( Option option );
048        
049        /**
050         * Finds the Option with the specified trigger
051         * 
052         * @param trigger the name of the option to retrieve
053         * @return the Option matching the trigger or null if none exists
054         */
055        Option getOption( String trigger );
056        
057        /**
058         * Retrieves the Argument values associated with the specified Option
059         * 
060         * @param trigger a trigger used to lookup the Option
061         * @return a list of values or an empty List if none are found
062         */
063        List getValues( String trigger );
064        
065        /**
066         * Retrieves the Argument values associated with the specified Option
067         * 
068         * @param trigger a trigger used to lookup the Option
069         * @param defaultValues the result to return if no values are found
070         * @return a list of values or defaultValues if none are found
071         */
072        List getValues( String trigger, List defaultValues );
073        
074        /**
075         * Retrieves the Argument values associated with the specified Option
076         * 
077         * @param option the Option associated with the values
078         * @return a list of values or an empty List if none are found
079         */
080        List getValues( Option option );
081        
082        /**
083         * Retrieves the Argument values associated with the specified Option
084         * 
085         * @param option the Option associated with the values
086         * @param defaultValues the result to return if no values are found
087         * @return a list of values or defaultValues if none are found
088         */
089        List getValues( Option option, List defaultValues );
090        
091        /**
092         * Retrieves the single Argument value associated with the specified Option
093         * 
094         * @param trigger a trigger used to lookup the Option
095         * @return the matching value or null if none exists
096         * @throws IllegalStateException if more than one values are found
097         */
098        Object getValue( String trigger ) throws IllegalStateException;
099        
100        /**
101         * Retrieves the single Argument value associated with the specified Option
102         * 
103         * @param trigger a trigger used to lookup the Option
104         * @param defaultValue the result to use if no values are found
105         * @return the matching value or defaultValue if none exists
106         * @throws IllegalStateException if more than one values are found
107         */
108        Object getValue( String trigger, Object defaultValue ) throws IllegalStateException;
109        
110        /**
111         * Retrieves the single Argument value associated with the specified Option
112         * 
113         * @param option the Option associated with the value
114         * @return the matching value or null if none exists
115         * @throws IllegalStateException if more than one values are found
116         */
117        Object getValue( Option option ) throws IllegalStateException;
118        
119        /**
120         * Retrieves the single Argument value associated with the specified Option
121         * 
122         * @param option the Option associated with the value
123         * @param defaultValue the result to use if no values are found
124         * @return the matching value or defaultValue if none exists
125         * @throws IllegalStateException if more than one values are found
126         */
127        Object getValue( Option option, Object defaultValue ) throws IllegalStateException;
128        
129        /**
130         * Retrieves the Boolean value associated with the specified Switch
131         * 
132         * @param trigger a trigger used to lookup the Option
133         * @return the Boolean associated with trigger or null if none exists
134         */
135        Boolean getSwitch( String trigger );
136        
137        /**
138         * Retrieves the Boolean value associated with the specified Switch
139         * 
140         * @param trigger a trigger used to lookup the Option
141         * @param defaultValue the Boolean to use if none match
142         * @return the Boolean associated with trigger or defaultValue if none exists
143         */
144        Boolean getSwitch( String trigger, Boolean defaultValue );
145        
146        /**
147         * Retrieves the Boolean value associated with the specified Switch
148         * 
149         * @param option the Option associated with the value
150         * @return the Boolean associated with option or null if none exists
151         */
152        Boolean getSwitch( Option option );
153        
154        /**
155         * Retrieves the Boolean value associated with the specified Switch
156         * 
157         * @param option the Option associated with the value
158         * @param defaultValue the Boolean to use if none match
159         * @return the Boolean associated with option or defaultValue if none exists
160         */
161        Boolean getSwitch( Option option, Boolean defaultValue );
162        
163        /**
164         * Retrieves the value associated with the specified property 
165         * 
166         * @param property the property name to lookup
167         * @return the value of the property or null
168         */
169        String getProperty( String property );
170        
171        /**
172         * Retrieves the value associated with the specified property 
173         * 
174         * @param property the property name to lookup
175         * @param defaultValue the value to use if no other is found
176         * @return the value of the property or defaultValue
177         */
178        String getProperty( String property, String defaultValue );
179        
180        /**
181         * Retrieves the set of all property names associated with this CommandLine
182         * 
183         * @return a none null set of property names 
184         */
185        Set getProperties();
186        
187        /**
188         * Retrieves the number of times the specified Option appeared in this 
189         * CommandLine
190         * 
191         * @param trigger a trigger used to lookup the Option
192         * @return the number of occurrences of the option
193         */
194        int getOptionCount( String trigger );
195        
196        /**
197         * Retrieves the number of times the specified Option appeared in this 
198         * CommandLine
199         * 
200         * @param option the Option associated to check
201         * @return the number of occurrences of the option
202         */
203        int getOptionCount( Option option );
204        
205        /**
206         * Retrieves a list of all Options found in this CommandLine
207         * 
208         * @return a none null list of Options
209         */
210        List getOptions();
211        
212        /**
213         * Retrieves a list of all Option triggers found in this CommandLine
214         * 
215         * @return a none null list of Option triggers
216         */
217        Set getOptionTriggers();
218    }